/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package byblos.negocio.pacote;

import byblos.negocio.objeto.TipoObjeto;

/**
 *
 * @author marco
 */
public enum TipoPacote {

    ABERTO("Aberto", PacoteAberto.class, ItemPacoteAbertoCategoria.class),
    FECHADO("Fechado", PacoteFechado.class, ItemPacoteFechadoCategoria.class);
    private String descricao;
    private Class<? extends Pacote> classe;
    private Class<? extends ItemPacoteCategoria> classeItem;

    TipoPacote(String descricao, Class<? extends Pacote> classe, Class<? extends ItemPacoteCategoria> classeItem) {
        this.descricao = descricao;
        this.classe = classe;
        this.classeItem = classeItem;
    }

    public String getDescricaoTipo() {
        return TipoObjeto.PACOTE + " " + descricao;
    }

    public Pacote getObjeto() {
        try {
            return classe.newInstance();
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public ItemPacoteCategoria getItem() {
        try {
            return classeItem.newInstance();
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public Class<? extends Pacote> getClasse() {
        return classe;
    }

    public String getDescricao() {
        return descricao;
    }

    @Override
    public String toString() {
        return descricao;
    }

    public int getIndice() {
        return ordinal();
    }
}
